package com.zoo.diannaopeijian.service;

import com.zoo.diannaopeijian.common.page.Page;
import com.zoo.diannaopeijian.domain.Ware;
import com.zoo.diannaopeijian.domain.WareParameterDetail;

import java.util.List;
import java.util.Map;

/**
 * 商品参数服务
 */
public interface WareParameterDetailService {
    /**
     * 新增商品参数
     *
     * @param wareParameterDetail
     * @return
     */
    boolean addWareParameterDetail(WareParameterDetail wareParameterDetail);

    /**
     * 获取商品参数
     *
     * @param wareId
     * @return 商品参数(拓展对象)
     */
    List<Map> getWareParameterDetail(Integer wareId);

    /**
     * 移除商品参数
     *
     * @param wareParameterDetail
     * @return
     */
    boolean removeWareParameterDetail(WareParameterDetail wareParameterDetail);

    /**
     * 分页根据(配件，配件参数细节, 商品条件)查询商品
     *
     * @param ware
     * @param page
     * @param componentId
     * @param componentParameterDetailIds
     * @return
     */
    List<Ware> getParameterDetailWareWithPage(
            Ware ware, Page page,
            Integer componentId,
            List<Integer> componentParameterDetailIds
    );

    /**
     * 根据(配件，配件参数细节, 商品条件)查询商品
     *
     * @param ware
     * @param componentId
     * @param componentParameterDetailIds
     * @return
     */
    List<Ware> getParameterDetailWare(
            Ware ware,
            Integer componentId,
            List<Integer> componentParameterDetailIds
    );

    /**
     * 分页根据(配件，配件参数细节, 模糊商品条件)查询商品
     *
     * @param ware
     * @param page
     * @param componentId
     * @param componentParameterDetailIds
     * @return
     */
    List<Ware> getFuzzyParameterDetailWareWithPage(
            Ware ware,
            Page page,
            Integer componentId,
            List<Integer> componentParameterDetailIds
    );

    /**
     * 根据(配件，配件参数细节, 模糊商品条件)查询商品
     *
     * @param ware
     * @param componentId
     * @param componentParameterDetailIds
     * @return
     */
    List<Ware> getFuzzyParameterDetailWare(
            Ware ware,
            Integer componentId,
            List<Integer> componentParameterDetailIds
    );
}
